package br.com.arquitetura.componente;

import java.util.List;
import java.util.Set;

import br.com.arquitetura.modelo.Comando;

public class Processador {
	public static final String R0 = "R0";
	public static final String R1 = "R1";
	public static final String R2 = "R2";
	public static final String R3 = "R3";
	public static final String R4 = "R4";
	public static final String RA = "RA";
	public static final String RB = "RB";
	public static final String IR = "IR";
	public static final String PC = "PC";
	public static final String REND = "REnd";
	public static final String RDADOS = "RDados";
	
	
	private List<Registrador> registradores;
	private List<Multiplexador> multiplexadores;
	private UnidadeControle uc;
	private UnidadeLogicaAritmetica ula;
	
	//comandos validos para esse processador
	private Set<Comando> comandos;
	
	//lista de componentes do processador
	private List<Componente> componentes;
	
	public Processador(List<Registrador> registradores, List<Multiplexador> multiplexadores, UnidadeControle uc, UnidadeLogicaAritmetica ula) {
		this.registradores = registradores;
		this.multiplexadores = multiplexadores;
		this.uc = uc;
		this.ula = ula;
	}

	public List<Registrador> getRegistradores() {
		return registradores;
	}

	public void setRegistradores(List<Registrador> registradores) {
		this.registradores = registradores;
	}

	public List<Multiplexador> getMultiplexadores() {
		return multiplexadores;
	}

	public void setMultiplexadores(List<Multiplexador> multiplexadores) {
		this.multiplexadores = multiplexadores;
	}

	public UnidadeControle getUc() {
		return uc;
	}

	public void setUc(UnidadeControle uc) {
		this.uc = uc;
	}

	public UnidadeLogicaAritmetica getUla() {
		return ula;
	}

	public void setUla(UnidadeLogicaAritmetica ula) {
		this.ula = ula;
	}

	public Set<Comando> getComandos() {
		return comandos;
	}

	public void setComandos(Set<Comando> comandos) {
		this.comandos = comandos;
	}
	
	public List<Componente> getComponentes() {
		return componentes;
	}

	public void setComponentes(List<Componente> componentes) {
		this.componentes = componentes;
	}
}
